package com.szrt.day20161026;


import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import java.util.Scanner;

import org.junit.Test;

import com.google.gson.Gson;
import com.sun.crypto.provider.RSACipher;
import com.szrt.day20161025.crm.utils.GsonUtil;
import com.szrt.day20161026.chuji.StudentEntity;

import sun.java2d.SurfaceDataProxy.CountdownTracker;
import sun.management.resources.agent;


/**
 *  com.szrt.day20161026.MySqlDemo
 * @author Administrator
 *
 */
public class MySqlDemo {
	
	
	
	/**
	 * 乱码问题：  utf-8  
	 * 
	 * 
	 * @throws Exception
	 */
	@Test
	public void insert() throws Exception {
		//1 加载mysql的驱动 CTRL+C  ctrl+shift+t
		Class.forName("com.mysql.jdbc.Driver");
		
		//2 获得连接 告诉jdbc我们要连接哪个数据库?   1：数据库库在哪里 2：用户名  3：密码
		//url 用协议jdbc作为游戏规则   类似：玩篮球知道篮球的游戏规则  mysql 3306 oracle 1521
		
		//为什么  原因  & and  但是如果写在配置文件中需要转码&amp;  &  &nbsp; 空格 
		//useUnicode=true&characterEncoding=UTF-8 要使用字符编码 而且 字符编码是utf-8
		//String url="jdbc:mysql://127.0.0.1:3306/db1609?useUnicode=true&amp;characterEncoding=UTF-8";
		String url="jdbc:mysql://127.0.0.1:3306/db1609?useUnicode=true&characterEncoding=utf-8";
		String user="root";
		String password="123456";
		Connection connection = DriverManager.getConnection(url, user, password);
		
		
		
		//3 得到删除的语句 executeUpdate  新手最容易犯错的地方：mysql 后面的分号一定不能要
		Statement statement = connection.createStatement();
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入ID");
		int id = scanner.nextInt();
		scanner.close();
				
		String sql ="insert into oa_student_t(ID,STUDENT_AGE,STUDENT_NAME) values("+id+",24,'所志松')";
		System.out.println(sql);
		
		int counter = statement.executeUpdate(sql);
		System.out.println(counter);
		System.out.println("插入成功....");
	}
	
	@Test
	public void delete() throws Exception {
		//1 加载mysql的驱动 CTRL+C  ctrl+shift+t
		Class.forName("com.mysql.jdbc.Driver");
		
		//2 获得连接 告诉jdbc我们要连接哪个数据库?   1：数据库库在哪里 2：用户名  3：密码
		//url 用协议jdbc作为游戏规则   类似：玩篮球知道篮球的游戏规则  mysql 3306 oracle 1521
		String url="jdbc:mysql://127.0.0.1:3306/db1609?useUnicode=true&characterEncoding=utf-8";
		String user="root";
		String password="123456";
		Connection connection = DriverManager.getConnection(url, user, password);
		
		
		
		//3 得到删除的语句 executeUpdate  新手最容易犯错的地方：mysql 后面的分号一定不能要
		Statement statement = connection.createStatement();
		int id = 100003;
		String sql ="delete from oa_student_t where id ="+id;
		System.out.println(sql);
		//counter 影响的记录的条数
		int counter =statement.executeUpdate(sql);
		System.out.println(counter);
		System.out.println("删除成功.....");
		
	}
	
	
	/**
	 * 
	 * 查询的主要步骤 分5步
	 * 在工作当中：如果因为业务的需要。需要在数据库中增加字段。
	 * 
	 * 重点：一定要告诉　经理　　　　　这个模块的负责人
	 * 
	 * 关闭连接  关闭语句
	 * @throws Exception
	 */
	@Test
	public void select() throws Exception {
		
		//1 加载mysql的驱动 CTRL+C  ctrl+shift+t
		Class.forName("com.mysql.jdbc.Driver");
		
		//2 获得连接 告诉jdbc我们要连接哪个数据库?   1：数据库库在哪里 2：用户名  3：密码
		//url 用协议jdbc作为游戏规则   类似：玩篮球知道篮球的游戏规则  mysql 3306 oracle 1521
		String url="jdbc:mysql://127.0.0.1:3306/db1609?useUnicode=true&characterEncoding=utf-8";
		String user="root";
		String password="123456";
		Connection connection = DriverManager.getConnection(url, user, password);
		
		//3 得到查询的语句 executeQuery
		Statement statement = connection.createStatement();
		String sql = "SELECT * FROM oa_student_t";
		
		//4 得到结果集　　在Set做了封装... 可以起1个遍历器
		ResultSet rs = statement.executeQuery(sql);
		
		
		//5 遍历结果集  从set里面1个1个的遍历   List
		while(rs.next()){
			//如何拿到第1列的值   2种方法
			
			//2.1 用下标访问 下标从1开始 避免使用
			//String xx = rs.getString(2);
			//System.out.println(xx);
			
			//2.2 直接用字段的名称  自动找出列  自动找出调用列对应的方法(反射...)
			String studentName = rs.getString("STUDENT_NAME");
			int id  = rs.getInt("ID");
			int studentAge = rs.getInt("STUDENT_AGE");
			
			//int id, int studentAge, String studentName  TeacherEntity
			StudentEntity student = new StudentEntity(id,studentAge,studentName);
			
			GsonUtil.toJson(student);
			
			
			
		}
		
		
		//问题： 如何 ResultSet 拿到我们想要的一个结果集
		
		
	}
	
	
	

}
